#pragma once
#include "Technique.h"
#include <glm\glm.hpp>

class ShadowMappingTechnique : public Technique
{
public:
	ShadowMappingTechnique(void);
	~ShadowMappingTechnique(void);

	virtual bool Init();

	void setMatrixID(const glm::mat4& MVP);
	void setViewMatrixID(const glm::mat4& ModelMatrix);
	void setModelMatrixID(const glm::mat4& ViewMatrix);
	void setDepthBiasID(const glm::mat4& depthBiasMVP);
	void setShadowMapID(unsigned int shadowMapID);
	void setlightInvDirID(glm::vec3 lightInvDir);
	void SetTextureUnit(unsigned int TextureUnit);

private:
	GLuint m_MatrixID;
	GLuint m_ViewMatrixID;
	GLuint m_ModelMatrixID;
	GLuint m_DepthBiasID;
	GLuint m_ShadowMapID;
	GLuint m_lightInvDirID;
	GLuint m_textureLocation;
};

